# GTest 扩展测试构建配置

# MCPy 代码生成器配置
code_gen = generator(
    python3,
    output: ['@BASENAME@.cpp'],
    arguments: [
        '-m', 'mcpy.cli',
        '@INPUT@',
        '-o', '@BUILD_DIR@',
        '--header-output', meson.current_build_dir(),
        '--source-root', meson.current_source_dir(),
        '--format', 'true',
        '--strict-typing', 'false',
        '--stubs-dir', meson.project_source_root() / 'stubs',
    ],
)

# 包含目录
inc_dir = include_directories('.')

# Python 源文件
py_sources = files(
    'main.py',
    'test_any_type.py',
    'test_async.py',
    'test_async_expr.py',
    'test_async_exception.py',
    'test_custom_class.py',
    'test_dict_builtin.py',
    'test_exceptions.py',
    'test_fixture.py',
    'test_global_functions.py',
    'test_integer_types.py',
    'test_lambda.py',
    'test_list_builtin.py',
    'test_set_builtin.py',
    'test_str_builtin.py',
    'test_tuple_builtin.py',
)

# 构建 GTest 测试可执行文件
gtest_exe = executable(
    'gtest_tests',
    code_gen.process(py_sources),
    include_directories: inc_dir,
    dependencies: [mcpy_dep, gtest_dep],
    install: false,
)

# 注册测试
if gtest_dep.found()
    test(
        'gtest_extension_tests',
        gtest_exe,
        workdir: meson.current_build_dir(),
        timeout: 30,
    )
endif